public class Jogador {

	private Pais paisCorrente;
	private Hipotese hipCorrente;
	private Personagem personagem;
	private ConjuntoInformacao evidencias = new ConjuntoInformacao();
	private String nome;

	public Jogador(String nome, PersonagemValor personagem) {
		this.personagem = new Personagem(personagem.toString());
		paisCorrente = new Pais(PaisValor.AUSTRIA.toString());
		this.nome = nome;
	}

	public void criarHipotese(Informacao arma, Informacao suspeito, Informacao pais) {
		hipCorrente = new Hipotese();

		hipCorrente.incluirArma(arma);
		hipCorrente.incluirSuspeito(suspeito);
		hipCorrente.incluirPais(pais);
	}

	public Hipotese obterHipotese() {
		return hipCorrente;
	}

	public void receberHipotese(Hipotese hipotese) {
		hipCorrente = hipotese;
	}

	public Pais obterRegiaoAtual() {
		return paisCorrente;
	}

	public ConjuntoInformacao obterEvidenciasParaRefutacao() {
		ConjuntoInformacao evidenciasParaRefutacao = new ConjuntoInformacao();
		Informacao evid;
		evidencias.incialisarIterador();
		while (evidencias.possuiProximo()) {
			evid = evidencias.obterProximo();
			if (hipCorrente.possuiComponente(evid))
				evidenciasParaRefutacao.incluir(evid);
		}
		return evidenciasParaRefutacao;
	}

	public void atribuirEvidencias(ConjuntoInformacao evidencias) {
		this.evidencias = evidencias;
	}

	public void aplicarRefutacao(Informacao evidencia) {
		hipCorrente.aplicarRefutacao(evidencia);
	}

	public boolean hipoteseRefutada() {
		return hipCorrente.hipoteseRefutada();
	}

	public String toString() {
		return nome + " - " + personagem;
	}

}
